// package com.open.basic.config;
//
//
// import com.open.basic.BaseRequest;
// import org.slf4j.MDC;
// import org.springframework.beans.factory.annotation.Value;
//
// import java.util.Map;
// import java.util.UUID;
//
//
// /**
//  * @author: system
//  * @Date: 2024/11/4 下午4:45
//  * @Version: V1.0
//  * @description: |
//  */
//
// public class RunnableWrap {
//
//     @Value("${logging.trace.enabled:true}")
//     private boolean enabled = true;
//     private final String HEADER_TRACE_PARENT = "traceparent";
//     private static final String TRACE_ID = "traceId";
//
//     public static Runnable wrap(final Runnable runnable, final Map<String, String> context, BaseRequest request) {
//         return () -> {
//             if (context == null) {
//                 MDC.clear();
//             } else {
//                 MDC.setContextMap(context);
//             }
//             setTraceIdIfAbsent();
//             UserContextUtil.set(request);
//             try {
//                 runnable.run();
//             } finally {
//                 MDC.clear();
//             }
//         };
//     }
//
//
//
//     public static void setTraceIdIfAbsent() {
//         if (MDC.get(TRACE_ID) == null) {
//             MDC.put(TRACE_ID, UUID.randomUUID().toString().replace("-", ""));
//         }
//     }
// }
